<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Windows notes</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB Installation and Build Guide" />
    <link rel="up" href="build_win.html" title="Chapter 5.  Building Berkeley DB for Windows" />
    <link rel="prev" href="build_win_test.html" title="Running the test suite under Windows" />
    <link rel="next" href="build_win_faq.html" title="Windows FAQ" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 11.2.5.3</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Windows notes</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="build_win_test.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 5. 
		Building Berkeley DB for Windows
        </th>
          <td width="20%" align="right"> <a accesskey="n" href="build_win_faq.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="build_win_notes"></a>Windows notes</h2>
          </div>
        </div>
      </div>
      <div class="orderedlist">
        <p>If a system memory environment is closed by all processes, subsequent
attempts to open it will return an error.  To successfully open a
transactional environment in this state, recovery must be run by the
next process to open the environment.  For non-transactional
environments, applications should remove the existing environment and
then create a new database environment.</p>
        <ol type="1">
          <li>Berkeley DB does not support the Windows/95, Windows/98 or
        Windows/ME platforms.</li>
          <li>On Windows, system paging file memory is freed on last close.  For this
reason, multiple processes sharing a database environment created using
the <a href="../api_reference/C/envopen.html#envopen_DB_SYSTEM_MEM" class="olink">DB_SYSTEM_MEM</a> flag must arrange for at least one process to
always have the environment open, or alternatively that any process
joining the environment be prepared to re-create it.</li>
          <li>When using the <a href="../api_reference/C/envopen.html#envopen_DB_SYSTEM_MEM" class="olink">DB_SYSTEM_MEM</a> flag, Berkeley DB shared regions are
created without ACLs, which means that the regions are only accessible
to a single user.  If wider sharing is appropriate (for example, both
user applications and Windows/NT service applications need to access
the Berkeley DB regions), the Berkeley DB code will need to be modified to create
the shared regions with the correct ACLs.  Alternatively, by not
specifying the <a href="../api_reference/C/envopen.html#envopen_DB_SYSTEM_MEM" class="olink">DB_SYSTEM_MEM</a> flag, filesystem-backed regions
will be created instead, and the permissions on those files may be
directly specified through the <a href="../api_reference/C/envopen.html" class="olink">DB_ENV-&gt;open()</a> method.</li>
          <li>Applications that operate on wide character strings can use the
Windows function WideCharToMultiByte with the code page CP_UTF8 to
convert paths to the form expected by Berkeley DB.  Internally, Berkeley DB calls
MultiByteToWideChar on paths before calling Windows functions.</li>
          <li>Various Berkeley DB methods take a <span class="bold"><strong>mode</strong></span> argument, which is intended
to specify the underlying file permissions for created files.  Berkeley DB
currently ignores this argument on Windows systems.
<p>It would be possible to construct a set of security attributes to pass to
<span class="bold"><strong>CreateFile</strong></span> that accurately represents the mode.  In the worst
case, this would involve looking up user and all group names, and creating
an entry for each.  Alternatively, we could call the <span class="bold"><strong>_chmod</strong></span>
(partial emulation) function after file creation, although this leaves us
with an obvious race.</p><p>Practically speaking, however, these efforts would be largely meaningless
on a FAT file system, which only has a "readable" and "writable" flag,
applying to all users.</p></li>
        </ol>
      </div>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="build_win_test.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="build_win.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="build_win_faq.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Running the test suite under Windows </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Windows FAQ</td>
        </tr>
      </table>
    </div>
  </body>
</html>
